From b33d85b594e625eaec9d69778645eacef17cd3a5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sun, 3 Dec 2017 16:58:01 +0100 Subject: [PATCH] gl renderer: Avoid consecutive opacity ops --- gsk/gl/gskglrenderops.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gsk/gl/gskglrenderops.c b/gsk/gl/gskglrenderops.c index 2741320b2a..3c97d94855 100644 --- a/gsk/gl/gskglrenderops.c +++ b/gsk/gl/gskglrenderops.c @@ -207,13 +207,23 @@ ops_set_opacity (RenderOpBuilder *builder, { RenderOp op; float prev_opacity; + RenderOp *last_op; if (builder->current_opacity == opacity) return opacity; - op.op = OP_CHANGE_OPACITY; - op.opacity = opacity; - g_array_append_val (builder->render_ops, op); + last_op = &g_array_index (builder->render_ops, RenderOp, builder->render_ops->len - 1); + + if (last_op->op == OP_CHANGE_OPACITY) + { + last_op->opacity = opacity; + } + else + { + op.op = OP_CHANGE_OPACITY; + op.opacity = opacity; + g_array_append_val (builder->render_ops, op); + } prev_opacity = builder->current_opacity; builder->current_opacity = opacity; -- 2.30.2